package cn.quang.utils.lang;

public class NumberUtils{

    /**
     * 整型包装类型拆箱，如果是null则返回0
     * @param num Integer
     */
    public static int unbox(Integer num) {
        return unbox(num, 0);
    }

    /**
     * 整型包装类型拆箱，如果是null则返回默认值
     * @param num Integer
     * @param defaultValue 默认值
     */
    public static int unbox(Integer num, int defaultValue) {
        return num == null ? defaultValue : num;
    }

    /**
     * 长整型包装类型拆箱，如果是null则返回0
     * @param num Long
     */
    public static long unbox(Long num) {
        return unbox(num, 0L);
    }

    /**
     * 长整型包装类型拆箱，如果是null则返回默认值
     * @param num Long
     * @param defaultValue 默认值
     */
    public static long unbox(Long num, long defaultValue) {
        return num == null ? defaultValue : num;
    }

    /**
     * 浮点型包装类型拆箱，如果是null则返回0
     * @param num Float
     */
    public static float unbox(Float num) {
        return unbox(num, 0f);
    }

    /**
     * 浮点型包装类型拆箱，如果是null则返回默认值
     * @param num Float
     * @param defaultValue 默认值
     */
    public static float unbox(Float num, float defaultValue) {
        return num == null ? defaultValue : num;
    }

    /**
     * 双精度型包装类型拆箱，如果是null则返回0
     * @param num Double
     */
    public static double unbox(Double num) {
        return unbox(num, 0d);
    }

    /**
     * 双精度型包装类型拆箱，如果是null则返回默认值
     * @param num Double
     * @param defaultValue 默认值
     */
    public static double unbox(Double num, double defaultValue) {
        return num == null ? defaultValue : num;
    }


}
